home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / apps / 42 / apndx3.prf < prev    next >
Text File  |  1986-07-17  |  12KB  |  403 lines

  1. .!****************************************************************************
  2. .! 
  3. .! ANTIC PUBLISHING INC., COPYRIGHT 1985.  REPRINTED BY PERMISSION.
  4. .!
  5. .! ** Professional GEM ** by Tim Oren
  6. .!
  7. .! Proff File by ST enthusiasts at
  8. .! Case Western Reserve University
  9. .! Cleveland, Ohio
  10. .! uucp : decvax!cwruecmp!bammi
  11. .! csnet: bammi@case
  12. .! arpa : bammi%case@csnet-relay
  13. .! compuserve: 71515,155
  14. .!
  15. .!****************************************************************************
  16. .!
  17. .!            Begin Appendix 3
  18. .!
  19. .!***************************************************************************
  20. .!
  21. .!
  22. .AP III Sample Code for Part IV 
  23. /*
  24. >>>>>>>>>>>>>>>>>>>>>>>>>> Sample C output file from RCS <<<<<<<<<<<<<<<<<<<<
  25. */
  26.                     /* (Comments added)    */
  27. BYTE *rs_strings[] = {            /* ASCII data        */
  28. "Title String",    
  29. "Exit",
  30. "Centered Text",
  31. "",
  32. "",
  33. "Butt⑨",
  34. "Tokyo",
  35. "",
  36. "Time: __:__:__",
  37. "999999",
  38. "",
  39. "Time: __:__:__  ",
  40. "999999",
  41. "New York"};
  42.  
  43. WORD IMAG0[] = {                /* Bitmap for G_IMAGE */
  44. 0x7FF, 0xFFFF, 0xFF80, 0xC00, 
  45. 0x0, 0xC0, 0x183F, 0xF03F, 
  46. 0xF060, 0x187F, 0xF860, 0x1860, 
  47. 0x187F, 0xF860, 0x1860, 0x187F, 
  48. 0xF860, 0x1860, 0x187F, 0xF860, 
  49. 0x1860, 0x187F, 0xF860, 0x1860, 
  50. 0x187F, 0xF860, 0x1860, 0x187F, 
  51. 0xF860, 0x1860, 0x187F, 0xF860, 
  52. 0x1860, 0x187F, 0xF860, 0x1860, 
  53. 0x187F, 0xF860, 0x1860, 0x187F, 
  54. 0xF860, 0x1860, 0x183F, 0xF03F, 
  55. 0xF060, 0xC00, 0x0, 0xC0, 
  56. 0x7FF, 0xFFFF, 0xFF80, 0x0, 
  57. 0x0, 0x0, 0x3F30, 0xC787, 
  58. 0x8FE0, 0xC39, 0xCCCC, 0xCC00, 
  59. 0xC36, 0xCFCC, 0xF80, 0xC30, 
  60. 0xCCCD, 0xCC00, 0x3F30, 0xCCC7, 
  61. 0xCFE0, 0x0, 0x0, 0x0};
  62.  
  63. WORD IMAG1[] = {                /* Mask for first icon */
  64. 0x0, 0x0, 0x0, 0x0, 
  65. 0x7FFE, 0x0, 0x1F, 0xFFFF, 
  66. 0xFC00, 0xFF, 0xFFFF, 0xFF00, 
  67. 0x3FF, 0xFFFF, 0xFFC0, 0xFFF, 
  68. 0xFFFF, 0xFFF0, 0x3FFF, 0xFFFF, 
  69. 0xFFFC, 0x7FFF, 0xFFFF, 0xFFFE, 
  70. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  71. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  72. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  73. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  74. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  75. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  76. 0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 
  77. 0xFFFF, 0xFFFE, 0x3FFF, 0xFFFF, 
  78. 0xFFFC, 0xFFF, 0xFFFF, 0xFFF0, 
  79. 0x3FF, 0xFFFF, 0xFFC0, 0xFF, 
  80. 0xFFFF, 0xFF00, 0x1F, 0xFFFF, 
  81. 0xF800, 0x0, 0x7FFE, 0x0};
  82.  
  83. WORD IMAG2[] = {                /* Data for first icon */
  84. 0x0, 0x0, 0x0, 0x0, 
  85. 0x3FFC, 0x0, 0xF, 0xC003, 
  86. 0xF000, 0x78, 0x180, 0x1E00, 
  87. 0x180, 0x180, 0x180, 0x603, 
  88. 0x180, 0xC060, 0x1C00, 0x6, 
  89. 0x38, 0x3000, 0x18C, 0xC, 
  90. 0x60C0, 0x198, 0x306, 0x6000, 
  91. 0x1B0, 0x6, 0x4000, 0x1E0, 
  92. 0x2, 0xC000, 0x1C0, 0x3, 
  93. 0xCFC0, 0x180, 0x3F3, 0xC000, 
  94. 0x0, 0x3, 0x4000, 0x0, 
  95. 0x2, 0x6000, 0x0, 0x6, 
  96. 0x60C0, 0x0, 0x306, 0x3000, 
  97. 0x0, 0xC, 0x1C00, 0x0, 
  98. 0x38, 0x603, 0x180, 0xC060, 
  99. 0x180, 0x180, 0x180, 0x78, 
  100. 0x180, 0x1E00, 0xF, 0xC003, 
  101. 0xF000, 0x0, 0x3FFC, 0x0};
  102.  
  103. WORD IMAG3[] = {            /* Mask for second icon */
  104. 0x0, 0x0, 0x0, 0x0, 
  105. 0x7FFE, 0x0, 0x1F, 0xFFFF, 
  106. 0xFC00, 0xFF, 0xFFFF, 0xFF00, 
  107. 0x3FF, 0xFFFF, 0xFFC0, 0xFFF, 
  108. 0xFFFF, 0xFFF0, 0x3FFF, 0xFFFF, 
  109. 0xFFFC, 0x7FFF, 0xFFFF, 0xFFFE, 
  110. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  111. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  112. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  113. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  114. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  115. 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  116. 0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 
  117. 0xFFFF, 0xFFFE, 0x3FFF, 0xFFFF, 
  118. 0xFFFC, 0xFFF, 0xFFFF, 0xFFF0, 
  119. 0x3FF, 0xFFFF, 0xFFC0, 0xFF, 
  120. 0xFFFF, 0xFF00, 0x1F, 0xFFFF, 
  121. 0xF800, 0x0, 0x7FFE, 0x0};
  122.  
  123. WORD IMAG4[] = {            /* Data for second icon */
  124. 0x0, 0x0, 0x0, 0x0, 
  125. 0x3FFC, 0x0, 0xF, 0xC003, 
  126. 0xF000, 0x78, 0x180, 0x1E00, 
  127. 0x180, 0x180, 0x180, 0x603, 
  128. 0x180, 0xC060, 0x1C00, 0x6, 
  129. 0x38, 0x3000, 0x18C, 0xC, 
  130. 0x60C0, 0x198, 0x306, 0x6000, 
  131. 0x1B0, 0x6, 0x4000, 0x1E0, 
  132. 0x2, 0xC000, 0x1C0, 0x3, 
  133. 0xCFC0, 0x180, 0x3F3, 0xC000, 
  134. 0x0, 0x3, 0x4000, 0x0, 
  135. 0x2, 0x6000, 0x0, 0x6, 
  136. 0x60C0, 0x0, 0x306, 0x3000, 
  137. 0x0, 0xC, 0x1C00, 0x0, 
  138. 0x38, 0x603, 0x180, 0xC060, 
  139. 0x180, 0x180, 0x180, 0x78, 
  140. 0x180, 0x1E00, 0xF, 0xC003, 
  141. 0xF000, 0x0, 0x3FFC, 0x0};
  142.  
  143. LONG rs_frstr[] = {            /* Free string index - unused */
  144. 0};
  145.  
  146. BITBLK rs_bitblk[] = {            /* First entry is index to image data */
  147. 0L, 6, 24, 0, 0, 0};
  148.  
  149. LONG rs_frimg[] = {            /* Free image index - unused */
  150. 0};
  151.  
  152. ICONBLK rs_iconblk[] = {        
  153. 1L, 2L, 10L, 4096,0,0, 0,0,48,24, 9,24,30,8,    /* First pointer is mask */
  154. 3L, 4L, 17L, 4864,0,0, 0,0,48,24, 0,24,48,8};    /* Second is data, third */
  155.                         /* is to title string     */
  156. TEDINFO rs_tedinfo[] = {
  157. 2L, 3L, 4L, 3, 6, 2, 0x1180, 0x0, -1, 14,1,    /* First pointer is text */
  158. 7L, 8L, 9L, 3, 6, 2, 0x2072, 0x0, -3, 11,1,    /* Second is template     */
  159. 11L, 12L, 13L, 3, 6, 0, 0x1180, 0x0, -1, 1,15,    /* Third is validation     */
  160. 14L, 15L, 16L, 3, 6, 1, 0x1173, 0x0, 0, 1,17};
  161.  
  162. OBJECT rs_object[] = {
  163. -1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 18,12,    /* Pointers are to: */
  164. 2, -1, -1, G_STRING, NONE, NORMAL, 0x0L, 3,1, 12,1,    /* rs_strings    */
  165. 3, -1, -1, G_BUTTON, 0x7, NORMAL, 0x1L, 5,9, 8,1,    /* rs_strings    */
  166. 0, 4, 4, G_BOX, NONE, NORMAL, 0xFF1172L, 3,3, 12,5,
  167. 3, -1, -1, G_IMAGE, LASTOB, NORMAL, 0x0L, 3,1, 6,3,    /* rs_bitblk    */
  168. -1, 1, 6, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 23,12,    
  169. 2, -1, -1, G_TEXT, NONE, NORMAL, 0x0L, 0,1, 23,1,    /* rs_tedinfo    */
  170. 6, 3, 5, G_IBOX, NONE, NORMAL, 0x1100L, 6,3, 11,5,
  171. 4, -1, -1, G_BUTTON, 0x11, NORMAL, 0x5L, 0,0, 11,1,    /* rs_strings    */
  172. 5, -1, -1, G_BUTTON, 0x11, NORMAL, 0x6L, 0,2, 11,1,    /* rs_strings    */
  173. 2, -1, -1, G_BOXCHAR, 0x11, NORMAL, 0x43FF1400L, 0,4, 11,1,
  174. 0, -1, -1, G_BOXTEXT, 0x27, NORMAL, 0x1L, 5,9, 13,1,    /* rs_tedinfo    */
  175. -1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 32,11,
  176. 2, -1, -1, G_ICON, NONE, NORMAL, 0x0L, 4,1, 6,4,    /* rs_iconblk    */
  177. 3, -1, -1, G_FTEXT, EDITABLE, NORMAL, 0x2L, 12,2, 14,1,    /* rs_tedinfo    */
  178. 0, 4, 4, G_FBOXTEXT, 0xE, NORMAL, 0x3L, 3,5, 25,4,    /* rs_tedinfo    */
  179. 3, -1, -1, G_ICON, LASTOB, NORMAL, 0x1L, 1,0, 6,4};    /* rs_iconblk    */
  180.  
  181. LONG rs_trindex[] = {            /* Points to start of trees in */
  182. 0L,                    /* rs_object               */
  183. 5L,
  184. 12L};
  185.  
  186. struct foobar {                /* Temporary structure used by    */
  187.     WORD    dummy;            /* RSCREATE when setting up image */
  188.     WORD    *image;            /* pointers.              */
  189.     } rs_imdope[] = {
  190. 0, &IMAG0[0],
  191. 0, &IMAG1[0],
  192. 0, &IMAG2[0],
  193. 0, &IMAG3[0],
  194. 0, &IMAG4[0]};
  195.                     /* Counts of structures defined */
  196. #define NUM_STRINGS 18
  197. #define NUM_FRSTR 0
  198. #define NUM_IMAGES 5
  199. #define NUM_BB 1
  200. #define NUM_FRIMG 0
  201. #define NUM_IB 2
  202. #define NUM_TI 4
  203. #define NUM_OBS 17
  204. #define NUM_TREE 3
  205.  
  206. BYTE pname[] = "DEMO.RSC";
  207. .bp
  208. /*
  209. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Title change utility <<<<<<<<<<<<<<<<<<<<<
  210. */
  211.     VOID
  212. set_text(tree, obj, str)
  213.     LONG    tree, str;
  214.     WORD    obj;
  215.     {
  216.     LONG    obspec;
  217.  
  218.     obspec = LLGET(OB_SPEC(obj));        /* Get TEDINFO address  */
  219.     LLSET(TE_PTEXT(obspec), str);        /* Set new text pointer */
  220.     LWSET(TE_TXTLEN(obspec), LSTRLEN(str)); /* Set new length    */
  221.     }
  222. .bp
  223. /*
  224. >>>>>>>>>>>>>>>>>>>>>> Text edit code segment <<<<<<<<<<<<<<<<<<<<<<<<<<
  225. */
  226.     LONG    tree, obspec;
  227.     BYTE    text[41];
  228.  
  229.     rsrc_gaddr(R_TREE, DIALOG, &tree);    /* Get tree address  */
  230.     obspec = LLGET(OB_SPEC(EDITOBJ));    /* Get TEDINFO address  */
  231.     LLSET(TE_PTEXT(obspec), ADDR(str));    /* Set new text pointer */
  232.     LWSET(TE_TXTLEN(obspec), 41);         /* Set max length    */
  233.     text[0] = '\0';                /* Make empty string */
  234. .bp
  235. /*
  236. >>>>>>>>>>>>>>>>>>>> Sample 68K only source code <<<<<<<<<<<<<<<<<<<<<<
  237. */
  238.     VOID
  239. set_text(tree, obj, str)
  240.     OBJECT    *tree;
  241.     WORD    obj;
  242.     BYTE    *str;
  243.     {
  244.     TEDINFO    *obspec;
  245.  
  246.     obspec = (TEDINFO *) (tree + obj)->ob_spec;
  247.                         /* Get TEDINFO address  */
  248.     obspec->te_ptext = str;            /* Set new text pointer */
  249.     obspec->te_txtlen = strlen(str);    /* Set new length    */
  250.     }
  251. .bp
  252. /*
  253. >>>>>>>>>>>>>>>>>>>>>>>>>>>> Symbol definitions <<<<<<<<<<<<<<<<<<<<<<<<<
  254. */
  255.                         /* Window parts */
  256. #define NAME 0x0001
  257. #define CLOSER 0x0002
  258. #define FULLER 0x0004
  259. #define MOVER 0x0008
  260. #define INFO 0x0010
  261. #define SIZER 0x0020
  262. #define UPARROW 0x0040
  263. #define DNARROW 0x0080
  264. #define VSLIDE 0x0100
  265. #define LFARROW 0x0200
  266. #define RTARROW 0x0400
  267. #define HSLIDE 0x0800
  268.  
  269. #define WF_KIND 1                /* wind_get/set parameters */
  270. #define WF_NAME 2
  271. #define WF_INFO 3
  272. #define WF_WXYWH 4
  273. #define WF_CXYWH 5
  274. #define WF_PXYWH 6
  275. #define WF_FXYWH 7
  276. #define WF_HSLIDE 8
  277. #define WF_VSLIDE 9
  278. #define WF_TOP 10
  279. #define WF_FIRSTXYWH 11
  280. #define WF_NEXTXYWH 12
  281. #define WF_NEWDESK 14
  282. #define WF_HSLSIZ 15
  283. #define WF_VSLSIZ 16
  284.                         /* window messages    */
  285. #define WM_REDRAW 20
  286. #define WM_TOPPED 21
  287. #define WM_CLOSED 22
  288. #define WM_FULLED 23
  289. #define WM_ARROWED 24
  290. #define WM_HSLID 25
  291. #define WM_VSLID 26
  292. #define WM_SIZED 27
  293. #define WM_MOVED 28
  294. #define WM_NEWTOP 29
  295.                         /* arrow messages    */
  296. #define WA_UPPAGE 0
  297. #define WA_DNPAGE 1
  298. #define WA_UPLINE 2
  299. #define WA_DNLINE 3
  300. #define WA_LFPAGE 4
  301. #define WA_RTPAGE 5
  302. #define WA_LFLINE 6
  303. #define WA_RTLINE 7
  304.  
  305. #define R_TREE 0                /* Redraw definitions     */
  306. #define ROOT 0
  307. #define MAX_DEPTH 8
  308.                         /* update flags        */
  309. #define    END_UPDATE 0
  310. #define    BEG_UPDATE 1
  311. #define    END_MCTRL  2
  312. #define    BEG_MCTRL  3
  313.                         /* Mouse state changes   */
  314. #define M_OFF 256
  315. #define M_ON 257
  316.                         /* Object flags         */
  317. #define NONE       0x0
  318. #define SELECTABLE 0x1
  319. #define DEFAULT    0x2
  320. #define EXIT       0x4
  321. #define EDITABLE   0x8
  322. #define RBUTTON   0x10
  323.                         /* Object states    */
  324. #define SELECTED  0x1
  325. #define CROSSED   0x2
  326. #define CHECKED   0x4
  327. #define DISABLED  0x8
  328. #define OUTLINED 0x10
  329. #define SHADOWED 0x20
  330.  
  331. #define G_BOX     20
  332. #define G_TEXT    21
  333. #define G_BOXTEXT 22
  334. #define G_IMAGE   23
  335. #define G_IBOX    25
  336. #define G_BUTTON  26
  337. #define G_BOXCHAR 27
  338. #define G_STRING  28
  339. #define G_FTEXT   29
  340. #define G_FBOXTEXT 30
  341. #define G_ICON    31
  342. #define G_TITLE   32
  343.                         /* Data structures    */
  344. typedef struct grect
  345.     {
  346.     int    g_x;
  347.     int    g_y;
  348.     int    g_w;
  349.     int    g_h;
  350.     } GRECT;
  351.  
  352. typedef struct object
  353.     {
  354.     int        ob_next;    /* -> object's next sibling    */
  355.     int        ob_head;    /* -> head of object's children */
  356.     int        ob_tail;    /* -> tail of object's children */
  357.     unsigned int    ob_type;    /* type of object- BOX, CHAR,...*/
  358.     unsigned int    ob_flags;    /* flags            */
  359.     unsigned int    ob_state;    /* state- SELECTED, OPEN, ...    */
  360.     long        ob_spec;    /* "out"- -> anything else    */
  361.     int        ob_x;        /* upper left corner of object    */
  362.     int        ob_y;        /* upper left corner of object    */
  363.     int        ob_width;    /* width of obj            */
  364.     int        ob_height;    /* height of obj        */
  365.     } OBJECT;
  366.  
  367. typedef struct text_edinfo
  368.     {
  369.     long        te_ptext;    /* ptr to text (must be 1st)    */
  370.     long        te_ptmplt;    /* ptr to template        */
  371.     long        te_pvalid;    /* ptr to validation chrs.    */
  372.     int        te_font;    /* font                */
  373.     int        te_junk1;    /* junk word            */
  374.     int        te_just;    /* justification- left, right...*/
  375.     int        te_color;    /* color information word    */
  376.     int        te_junk2;    /* junk word            */
  377.     int        te_thickness;    /* border thickness        */
  378.     int        te_txtlen;    /* length of text string    */
  379.     int        te_tmplen;    /* length of template string    */
  380.     } TEDINFO;
  381.  
  382.                     /* "Portable" data definitions */
  383. #define OB_NEXT(x) (tree + (x) * sizeof(OBJECT) + 0)
  384. #define OB_HEAD(x) (tree + (x) * sizeof(OBJECT) + 2)
  385. #define OB_TAIL(x) (tree + (x) * sizeof(OBJECT) + 4)
  386. #define OB_TYPE(x) (tree + (x) * sizeof(OBJECT) + 6)
  387. #define OB_FLAGS(x) (tree + (x) * sizeof(OBJECT) + 8)
  388. #define OB_STATE(x) (tree + (x) * sizeof(OBJECT) + 10)
  389. #define OB_SPEC(x) (tree + (x) * sizeof(OBJECT) + 12)
  390. #define OB_X(x) (tree + (x) * sizeof(OBJECT) + 16)
  391. #define OB_Y(x) (tree + (x) * sizeof(OBJECT) + 18)
  392. #define OB_WIDTH(x) (tree + (x) * sizeof(OBJECT) + 20)
  393. #define OB_HEIGHT(x) (tree + (x) * sizeof(OBJECT) + 22)
  394.  
  395. #define TE_PTEXT(x)  (x)
  396. #define TE_TXTLEN(x)  (x + 24)
  397. .!
  398. .!****************************************************************************
  399. .!
  400. .!            End Appendix 3
  401. .!
  402. .!****************************************************************************
  403.